import React from 'react';
import { obj_empty, obj_str, is_empty, BtSwitch, loc } from 'sui';

const g_access = () => {
    return [{
        k: "tech", v: loc("l_320"), id: "tech",
        s: [
            {k: "ab", v: loc("l_362")},
            {k: "ac", v: loc("l_235")},
            {k: "ad", v: loc("l_552"), s: [
                {k: "bcage", v: loc("l_528")},
                {k: "bseal", v: loc("l_529")},
                {k: "bcera", v: loc("l_712")},
                {k: "bstell", v: loc("l_713")},
                {k: "blathe", v: loc("l_894")},
                {k: "bforge", v: loc("l_893")},
            ]},
            {k: "af", v: loc("l_404")},
        ]
    }, {
        k: "task", v: loc("l_321"), id: "task",
        s: [
            {k: "ba", v: loc("l_221")},
            {k: "bb", v: loc("l_733")},
            {k: "bc", v: loc("l_355")},
            {k: "bf", v: loc("l_881")},
            {k: "bd", v: loc("l_360")},
            {k: "be", v: loc("l_235")},
            {k: "-", v: loc("l_152"), s: [
                {k: "bfb", v: loc("l_790")},
                {k: "bfa", v: loc("l_239")},
            ]},
        ]
    }, {
        k: "sale", v: loc("l_176"), id: "sale",
        s: [
            {k: "ta", v: `${loc("l_453")} - ${loc("l_496")}`},
            {k: "tc", v: `${loc("l_520")} - ${loc("l_496")}`},
        ]
    }, {
        k: "buy", v: loc("l_534"), id: "buy",
        s: [
            {k: "wa", v: `${loc("l_535")} - ${loc("l_496")}`},
            {k: "wb", v: `${loc("l_575")} - ${loc("l_496")}`},
        ]
    }, {
        k: "census", v: loc("l_443"), id: "census",
    }, {
        k: "pick", v: loc("l_885"), id: "pick",
    }, {
        k: "pair", v: loc("l_689"), id: "pair",
        s: [
            {k: "da", v: `${loc("l_736")} - ${loc("l_496")}`},
            {k: "de", v: `${loc("l_874")} - ${loc("l_496")}`},
            {k: "db", v: `${loc("l_742")} - ${loc("l_496")}`},
            {k: "dc", v: `${loc("l_744")} - ${loc("l_496")}`},
            {k: "dd", v: `${loc("l_737")} - ${loc("l_496")}`},
        ]
    }, {
        k: "supply", v: loc("l_549"), id: "supply",
        s: [
            {k: "ea", v: `${loc("l_739")} - ${loc("l_496")}`},
            {k: "eb", v: `${loc("l_710")} - ${loc("l_496")}`},
        ]
    }, {
        k: "ng", v: loc("l_811"), id: "ng",
        s: [
            {k: "ra", v: `${loc("l_811")} - ${loc("l_496")}`},
            {k: "rb", v: `${loc("l_812")} - ${loc("l_496")}`},
        ]
    }, {
        k: "stuff", v: loc("l_720"), id: "stuff",
        s: [
            {k: "qc", v: `${loc("l_768")} - ${loc("l_496")}`},
            {k: "qb", v: `${loc("l_867")} - ${loc("l_496")}`},
        ]
    }, {
        k: "kind", v: loc("l_724"), id: "kind",
        s: [
            {k: "kqc", v: `${loc("l_724")} - ${loc("l_496")}`},
            {k: "kqb", v: `${loc("l_727")} - ${loc("l_496")}`},
        ]
    }, {
        k: "warehouse", v: loc("l_722"), id: "warehouse",
        s: [
            {k: "fa", v: `${loc("l_723")} - ${loc("l_496")}`},
            {k: "fb", v: `${loc("l_766")} - ${loc("l_496")}`},
            {k: "fc", v: `${loc("l_781")} - ${loc("l_496")}`},
        ]
    }, {
        k: "side", v: loc("l_445"), id: "side",
        s: [
            {k: "ga", v: `${loc("l_446")} - ${loc("l_496")}`},
            {k: "gb", v: `${loc("l_756")} - ${loc("l_496")}`},
        ]
    }, {
        k: "outhouse", v: loc("l_138"), id: "outhouse",
        s: [
            {k: "outhouse.lathe", v: loc("l_894"), id: "outhouse", s: [{k: "outa", v: loc("l_496")}]},
            {k: "outhouse.forge", v: loc("l_893"), id: "outhouse", s: [{k: "outb", v: loc("l_496")}]},
            {k: "outhouse.blank", v: loc("l_150"), id: "outhouse", s: [{k: "outc", v: loc("l_496")}]},
            {k: "outhouse.setting", v: loc("l_191"), id: "outhouse", s: [{k: "outd", v: loc("l_496")}]},
        ]
    }, {
        k: "test", v: loc("l_769"), id: "test",
        s: [
            {k: "test.cage", v: loc("l_528"), id: "test", s: [{k: "tca", v: loc("l_496")}]},
            {k: "test.seal", v: loc("l_529"), id: "test", s: [{k: "tse", v: loc("l_496")}]},
            {k: "test.stell", v: loc("l_712"), id: "test", s: [{k: "tst", v: loc("l_496")}]},
            {k: "test.cera", v: loc("l_713"), id: "test", s: [{k: "tce", v: loc("l_496")}]},
            {k: "test.lathe", v: loc("l_894"), id: "test", s: [{k: "tla", v: loc("l_496")}]},
            {k: "test.forge", v: loc("l_893"), id: "test", s: [{k: "tfr", v: loc("l_496")}]},
        ]
    }, {
        k: "qa", v: loc("l_778"), id: "qa",
        s: [
            {k: "qa.cage", v: loc("l_528"), id: "qa", s: [{k: "qca", v: loc("l_496")}]},
            {k: "qa.seal", v: loc("l_529"), id: "qa", s: [{k: "qse", v: loc("l_496")}]},
            {k: "qa.stell", v: loc("l_712"), id: "qa", s: [{k: "qst", v: loc("l_496")}]},
            {k: "qa.cera", v: loc("l_713"), id: "qa", s: [{k: "qce", v: loc("l_496")}]},
            {k: "qa.lathe", v: loc("l_894"), id: "qa", s: [{k: "qla", v: loc("l_496")}]},
            {k: "qa.forge", v: loc("l_893"), id: "qa", s: [{k: "qfr", v: loc("l_496")}]},
        ]
    }, {
        k: "defect", v: loc("l_831"), id: "defect",
        s: [
            {k: "defect.cage", v: loc("l_528"), id: "defect", s: [{k: "dca", v: loc("l_496")}]},
            {k: "defect.seal", v: loc("l_529"), id: "defect", s: [{k: "dse", v: loc("l_496")}]},
            {k: "defect.stell", v: loc("l_712"), id: "defect", s: [{k: "dst", v: loc("l_496")}]},
            {k: "defect.cera", v: loc("l_713"), id: "defect", s: [{k: "dce", v: loc("l_496")}]},
            {k: "defect.lathe", v: loc("l_894"), id: "defect", s: [{k: "dla", v: loc("l_496")}]},
            {k: "defect.forge", v: loc("l_893"), id: "defect", s: [{k: "dfr", v: loc("l_496")}]},
        ]
    }, {
        k: "part", v: loc("l_135"), id: "part",
        s: [
            { k: "-", v: loc("l_136"), s: [
                {k: "pta1", v: loc("l_552")},
                {k: "pta2", v: loc("l_741")},
                {k: "pta3", v: loc("l_496")},
            ]},
            {k: "ptc", v: `${loc("l_781")} - ${loc("l_496")}`},
            {k: "ptd", v: `${loc("l_112")} - ${loc("l_496")}`},
        ]
    }, {
        k: "oil", v: loc("l_102"), id: "oil",
        s: [
            { k: "-", v: loc("l_113"), s: [
                {k: "uab", v: loc("l_496")},
                {k: "uac", v: loc("l_741")},
            ]},
            {k: "ub", v: `${loc("l_723")} - ${loc("l_496")}`},
            {k: "uc", v: `${loc("l_781")} - ${loc("l_496")}`},
            {k: "ud", v: `${loc("l_112")} - ${loc("l_496")}`},
            {k: "ue", v: `${loc("l_109")} - ${loc("l_496")}`},
        ]
    }, {
        k: "stock", v: loc("l_323"), id: "stock",
        s: [
            {
                k: "stock.stell", v: loc("l_712"), id: "stock",
                s: [
                    {k: "jaa", v: loc("l_496")},
                    {k: "jab", v: loc("l_741")},
                    {k: "jac", v: loc("l_793")},
                ]
            }, {
                k: "stock.cera", v: loc("l_713"), id: "stock",
                s: [
                    {k: "jba", v: loc("l_496")},
                    {k: "jbb", v: loc("l_741")},
                    {k: "jbc", v: loc("l_793")},
                ]
            }, {
                k: "stock.cage", v: loc("l_528"), id: "stock",
                s: [
                    {k: "jca", v: loc("l_496")},
                    {k: "jcb", v: loc("l_741")},
                    {k: "jcc", v: loc("l_793")},
                ]
            }, {
                k: "stock.seal", v: loc("l_529"), id: "stock",
                s: [
                    {k: "jda", v: loc("l_496")},
                    {k: "jdb", v: loc("l_741")},
                    {k: "jdc", v: loc("l_793")},
                ]
            }, {
                k: "stock.forge", v: loc("l_893"), id: "stock",
                s: [
                    {k: "jea", v: loc("l_496")},
                    {k: "jeb", v: loc("l_741")},
                ]
            }, {
                k: "stock.lathe", v: loc("l_894"), id: "stock",
                s: [
                    {k: "jfa", v: loc("l_496")},
                    {k: "jfb", v: loc("l_741")},
                ]
            },
        ]
    }, {
        k: "away", v: loc("l_819"), id: "away",
        s: [
            {k: "mb", v: `${loc("l_818")} - ${loc("l_496")}`},
            {k: "ma", v: `${loc("l_822")} - ${loc("l_496")}`},
        ]
    }, {
        k: "goods", v: loc("l_850"), id: "goods",
        s: [
            {k: "na", v: `${loc("l_818")} - ${loc("l_496")}`},
            {k: "nb", v: `${loc("l_852")} - ${loc("l_496")}`},
        ]
    }, {
        k: "equip", v: loc("l_687"), id: "equip",
        s: [
            {k: "kg", v: `${loc("l_872")} - ${loc("l_496")}`},
        ]
    },
    {k: "trace", v: loc("l_324"), id: "trace"},
    {
        k: "manage", v: loc("l_326"), id: "manage",
        s: [
            {k: "ka", v: `${loc("l_265")} - ${loc("l_496")}`},
            {k: "kb", v: `${loc("l_245")} - ${loc("l_496")}`},
            {k: "kc", v: `${loc("l_251")} - ${loc("l_496")}`},
            {k: "kd", v: `${loc("l_260")} - ${loc("l_496")}`},
            {k: "ke", v: `${loc("l_258")} - ${loc("l_496")}`},
            {k: "kf", v: `${loc("l_236")} - ${loc("l_496")}`},
            {k: "kh", v: `${loc("l_255")} - ${loc("l_496")}`},
            {k: "kj", v: `${loc("l_248")} - ${loc("l_496")}`},
        ]
    }]
};

const get_item = (mod, hget, hset) => {
    if (obj_empty(mod)) {
        return null;
    }

    const ret = [];

    const Sub = ({ item, ck }) => {
        if (ck !== "-" && !hget(ck)) {
            return null;
        }

        return <div className="ml-10">{item}</div>;
    };

    const getItem= (item, ret) => {
        item.forEach((d, i) => {
            const id = obj_str(d, "id");
            if (id) {
                if (!mod[id]) {
                    return;
                }
            }

            const k = d.k;

            if (k === "-") {
                ret.push(<div key={`${i}`} className="ml-6 text-base">{d.v}</div>);
            }
            else {
                ret.push(<BtSwitch key={k} hcmd={v => hset(k, v)} checked={hget(k)}>{d.v}</BtSwitch>);
            }

            if (is_empty(d.s)) {
                return;
            }

            const sub = [];
            getItem(d.s, sub);

            ret.push(<Sub key={`${k}${i}sub`} item={sub} ck={k}/>);
        });
    };

    getItem(g_access(), ret)

    return ret;
};

export {get_item, g_access};
